package org.projectback.config;

import io.lettuce.core.ReadFrom;

import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class RedisConfiguration {
    /*
    ReadFrom 策略解读：
    策略	说明
    REPLICA_PREFERRED	优先从副本（从节点）读取，所有副本都不可用时才从主节点读取。这是推荐策略。
    MASTER_PREFERRED	优先从主节点读取，主节点不可用时才从副本读取。
    REPLICA	只从副本节点读取，如果副本不可用则报错。
    MASTER	只从主节点读取（默认行为）。
    NEAREST	从延迟最低的节点（主或从）读取。
     */
    @Bean
    public LettuceClientConfigurationBuilderCustomizer lettuceCustomizer() {
        return clientConfigurationBuilder -> {
            // 配置读写分离策略
            clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
        };
    }

}
